package com.xoa.service.hr;

import com.xoa.model.hr.HrStaffInfo;
import com.xoa.model.users.Users;
import com.xoa.util.ToJson;
import com.xoa.util.common.wrapper.BaseWrapper;
import com.xoa.util.common.wrapper.BaseWrappers;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.ParseException;

/**
 * Created by 韩东堂 on 2017/7/12.
 */
@Service
public interface HrSStaffInfoService {

    public BaseWrappers selectRetireeInfo(String startTime,String endTime);

    public ToJson<HrStaffInfo> selectPersonFileByDeptId(HttpServletRequest request, Integer deptId);

    public  HrStaffInfo selectPersonFileByUserId(HttpServletRequest request,Integer uid);

    public  ToJson<HrStaffInfo> selectPersonByUserId(HttpServletRequest request,Integer uid);

    public ToJson<HrStaffInfo> updatePersonFile(HrStaffInfo hrStaffInfo,HttpServletRequest request);

    public  ToJson<HrStaffInfo> selectOnLinePerson(HrStaffInfo hrStaffInfo, HttpServletResponse response,HttpServletRequest request, String exprot);

    public  ToJson<HrStaffInfo> selectLeavePerson(HrStaffInfo hrStaffInfo, HttpServletResponse response,HttpServletRequest request, String exprot);
    //public ToJson<HrStaffInfo> savePersonFile(HrStaffInfo hrStaffInfo,HttpServletRequest request)throws Exception;

    @Transactional(rollbackFor = Exception.class)
    ToJson<Users> savePersonFile(HrStaffInfo hrStaffInfo,HttpServletRequest request);

    public ToJson<Object> selectStaffInfoById(String staffId);


    public  ToJson<HrStaffInfo> deletePersonById(String staffIds);
    /**
     * 创建作者:   牛江丽
     * 创建日期:   2017年7月25日 下午15:30:00
     * 方法介绍:   查询未建档人人数
     * 参数说明:   @param deptId部门编号
     * 参数说明:   @return
     *
     * @return int人数
     */
    public ToJson<HrStaffInfo> queryCountNoDocument(String deptId);


    public ToJson<HrStaffInfo> getUserByDeptId(Integer deptId);

    /**
     * 创建作者：牛江丽
     * 方法介绍：上传人事档案中的头像,并修改头像
     * @param request
     * @param hrStaffInfo
     * @return
     */
    public ToJson<HrStaffInfo> uploadImage(HttpServletRequest request, MultipartFile imageFile, HrStaffInfo hrStaffInfo)throws IllegalStateException, IOException;

    /**
     * @创建作者： 杨超
     * @方法介绍：返回所有职员的工作年限信息
     * @param space 时间间隔
     * @return
     */
    public BaseWrapper getAllWorkYearsInfo(int space);

    /**
     * @创建作者： 杨超
     * @方法介绍：返回所有职员的学历信息
     * @return
     */
    public BaseWrapper getAllRecordInfo();
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年9月18日 上午10:30:00
     * 方法介绍:   导入人事档案
     * 参数说明:   @return
     *
     * @return int人数
     */
    public ToJson<HrStaffInfo> importStaffInfo(MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSession session);
    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月17日 上午11:10:00
     * 方法介绍:   查询登录人的人事档案
     * 参数说明:
     *
     */
    public  ToJson<HrStaffInfo> selectOwnStaffInfo(HttpServletRequest request,Users user);


    public BaseWrappers getHrStaffInfoNews();
    public BaseWrapper getHrStaffInfoCount(String type) throws ParseException;

    public ToJson<Object> selectStaffInfoByIds(String userId);

    public ToJson<Object> getExperInformationList();

  /**
     * 李阳
     * 2018.7.26
     * 在职 查询档案 分页
     */
    public ToJson<HrStaffInfo> statusOne(HttpServletRequest request, HttpServletResponse response,HrStaffInfo hrStaffInfo,String deptIds,Integer page, Integer pageSize, boolean useFlag,String export);
    /**
     * 李阳
     * 2018.7.26
     *  离职查询档案 分页
     */
    public ToJson<HrStaffInfo> statusTwo(HttpServletRequest request, HttpServletResponse response,HrStaffInfo hrStaffInfo,String deptIds,Integer page, Integer pageSize, boolean useFlag,String export);


    /**
     * 根据部门id 查找离职的人
     * @param deptId
     * @return
     */
    public ToJson<HrStaffInfo> getByDeptIdStatusTwo(String deptId);
    /**
     *  李阳
     *  根据 staffId 条件查询信息
     * @return
     */
    public ToJson<HrStaffInfo> getByStaffId(Integer staffId,String userId);

    /**
     *  李阳
     *  删除全部档案信息
     * @return
     */
    public ToJson<HrStaffInfo> delAll(String workStatus);

    /**
     *  李阳
     *  删除废弃档案
     * @return
     */
    public ToJson<HrStaffInfo> selectLose(String workStatus);

 /**
     * 创建者：戚中校
     * 方法作用：根据条件查询数量
     * @param
     * @param deptId(传入的多个部门的编号)
     * @return 返回的json字符串中  nums是返回的结果的数量
     *
     */
    public  ToJson<HrStaffInfo> selectNumByCon(HrStaffInfo record,Integer[] deptId);

   public ToJson<HrStaffInfo> getNoDept();

    /**
    * @Description:当前用户信息
    * @Author: xiaomeng.Yu
    * @Date: 2018/8/8
    */
    public ToJson<Object> selectStaffInfo(String userId);

    public ToJson deletPhoteName(HrStaffInfo hrStaffInfo);

    BaseWrapper uploadImg(HttpServletRequest request, MultipartFile file);



}
